package Negocio;

import java.util.ArrayList;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import DTO.EmpresaSegurosVO;
import SRV.DireccionSRV;
import SRV.FacturaProveedorSRV;

@Entity
@DiscriminatorValue("empSeguros")
public class EmpresaSeguros extends Proveedor
{
	@Column (name="tipoSeguro")
	private String tipoSeguro;
	@Column (name="mercaderiaCubierta")
	private String mercaderiaCubierta;
	@Column (name="tarifaSeguro")
	private float tarifa;
	
	public EmpresaSeguros(long cuit, String nombre, Direccion direccion, String tipoSeguro, String mercaderiaCubierta, float tarifa) 
	{
		super(cuit, nombre, direccion);
		this.tipoSeguro = tipoSeguro;
		this.mercaderiaCubierta = mercaderiaCubierta;
		this.tarifa = tarifa;
	}
	
	public EmpresaSeguros toBusiness(EmpresaSegurosVO segurosVO) {
	    Direccion direccion = new Direccion();
	    DireccionSRV daoDir =  new DireccionSRV();
	    direccion = daoDir.getDireccion(segurosVO.getDireccion());
	    
	    EmpresaSeguros devuelto = new EmpresaSeguros(segurosVO.getCuit(), segurosVO.getNombre(), direccion, 
		    segurosVO.getTipoSeguro(), segurosVO.getMercaderiaCubierta(), segurosVO.getTarifa());
	    
	    FacturaProveedor factura = new FacturaProveedor();
	    FacturaProveedorSRV daoFact = new FacturaProveedorSRV();
	    
	    for (Integer idAux : segurosVO.getFacturas()){
	    	factura = daoFact.getFacturaProvvedor(idAux);
	    	devuelto.agregarFactura(factura);
	    }
	    
	    return devuelto;
	}
	
	public EmpresaSeguros(){}

	public String getTipoSeguro() {
		return tipoSeguro;
	}

	public void setTipoSeguro(String tipoSeguro) {
		this.tipoSeguro = tipoSeguro;
	}

	public String getMercaderiaCubierta() {
		return mercaderiaCubierta;
	}

	public void setMercaderiaCubierta(String mercaderiaCubierta) {
		this.mercaderiaCubierta = mercaderiaCubierta;
	}

	public float getTarifa() {
		return tarifa;
	}

	public void setTarifa(float tarifa) {
		this.tarifa = tarifa;
	}
	
	public EmpresaSegurosVO toVO(){
	    ArrayList<Integer> facturasVO = new ArrayList<Integer>();
		
	    for (FacturaProveedor aux : getFacturas()){
		facturasVO.add(aux.getIdFacturaProveedor());
	    }
	    EmpresaSegurosVO aux = new EmpresaSegurosVO(getCuit(), getNombre(), getDireccion().getIdDireccion(), facturasVO, tipoSeguro, mercaderiaCubierta, tarifa);
	    return aux;
	}
	
	public boolean esCarrier(){
		return false;
	}
	
	public boolean esTallerGeneral(){
		return false;
	}
	
	public boolean esTallerOficial(){
		return false;
	}
	
	public boolean esAgenteOficial(){
		return false;
	}
	
	public boolean esEmpresaSeguros(){
		return true;
	}
	
	public boolean esEmpresaSeguridad(){
		return false;
	}
}
